"추론하다(inference)"의 의미는 뭘까?
LLM 관련 글을 읽다보면 모델 추론이라는 표현을 종종 본다.
의미를 아직 잘 모르겠지만 몇몇 아티클을 읽어보고 추정하는 내용을 정리해본다.
참고한 아티클은 다음과 같다.
Python 종속성은 엄청남. Python 또는 PyTorch용 Docker 이미지는 일반적으로 몇 GB 또는 수십 GB에 달하며, 이는 엣지 서버나 디바이스에서 AI 추론을 수행할 때 특히 문제가 됨
초경량: 추론 애플리케이션은 모든 종속성을 포함하여 2MB에 불과. 이는 일반적인 PyTorch 컨테이너 크기의 1%도 되지 않음
LLaMa 추론 코드를 순수 C++로 재작성한 LLaMA.cpp 덕분에 Pixel5, M2 맥북프로, Raspberry Pi 등 다양한 하드웨어에서 실행 가능
아마도 모델을 사용하는 것을 추론이라고 하는 것 같다. PyTorch나 Tensorflow 같은 프레임워크를 사용하여 모델을 불러와서 사용할 수 있다. 하지만 이러한 프레임워크는 학습을 위한 라이브러리를 제공하거나, 다양한 모델에 대한 기능을 제공하기 때문에 너무 무겁다. 그래서 전용 "추론 애플리케이션"은 가벼운 환경에서 동작케 하는 것이 목적인 것으로 보인다.
맥북에서 LLaMA 모델을 4-bit 양자화하여 실행하는 것을 목표
llama.cpp는 고성능 서버 컴퓨팅이 아닌 맥북과 같은 워크스테이션에서도 실행하는 것이 목적이다. 첫 번째 아티클은 WASM으로 브라우저에서도 모델 추론을 수행할 수 있도록 하는 것이 목적이다. 모두 가벼운 컴퓨팅 환경에서 실행 가능케 한다.
https://news.hada.io/topic?id=11980
AI가 더욱 주류가 되면서, 우리는 추론(inference) 작업에서 발생하는 부하가 훨씬 더 컴퓨팅 집약적이 될 것으로 기대합니다. 1억 명의 GPT-4 사용자를 서비스하는 데 드는 비용은 모델을 훈련하는 데 소요된 비용의 4배가 될 수 있습니다.
추론을 통해 사용자에게 서비스한다. 그 비용이 학습에 소요되는 비용보다 커진다.
LLM 추론 속도 300배까지 향상...'패스트 피드 포워드' 아키텍처 공개
... (중략) 연구진은 이 기술을 검증하기 위해 트랜스포머 기반의 구글 '버트(BERT)'의 피드 포워드 레이어를 FFF로 대체한 ‘패스트 보트(Fast BERT)’ 모델을 개발했다.
언어 모델의 구조를 잘 모르겠지만, 기존 모델을 크게 변경하지 않고서도 적용이 가능한 모양이다.
특히 연구진은 FFF 네트워크를 LLM에 통합하면 엄청난 가속 가능성이 있다고 주장했다. 예를 들어 'GPT-3'에서 각 트랜스포머의 피드 포워드 네트워크는 4만9152개의 뉴런으로 구성되지만, 15층 깊이의 FFF 네트워크로 대체할 경우 총 6만5536개의 뉴런을 포함하지만 실제 추론에는 GPT-3 뉴런의 약 0.03%에 해당하는 16개만 사용한다.
추론에 사용하는 뉴런의 수를 줄여서 속도를 높였다고 한다.
단일 'A6000' GPU에서 단 하루 동안 훈련한 패스트 버트 모델은 버트 모델 성능의 최소 96%를 유지했으며, 가장 뛰어난 실험 결과에서는 피드 포워드 레이어의 뉴런을 고작 0.3%만 사용하면서 기존 버트 모델과 동일한 성능을 보였다.
단, 성능 저하가 있다고 한다. 그래도 속도 향상이 큰 것에 비해 성능 저하는 매우 적은 편이다.
한국어로 된 수능 수학 문제를 외국 수학 유튜버에게 풀게하는 영상. 수학 표현식과 후보로 답을 구해보는 휴리스틱을 사용한 후, 한국어를 올바르게 해석하는 흐름이 인상적이다. 한국어 발음은 어느정도 가능하다는 점과 일본어와 중국어를 조금 안다는 정보가 문제를 이해하는데 크게 일조한다.
일본어와 같은 어순을 가지고 있다보니 조사의 위치를 통해 목적어와 주어를 찾아낸다. 그러다보니 "마쳤을", "않을"의 "을"을 조사로 판단하는 불상사가 발생했다.
한국어 발음을 해보는 것도 도움이 되었다. "삼각형"은 일본어 "산각케"와 유사한 것에서 삼각형을 유추해냈다. 그러면서 "정삼각형"을 휴리스틱으로 equilateral triangle로 판단, "정육면체"에서 equilateral를 확정한다. 육면체는 중국어 "면체"가 중국어 발음과 비슷했다. 외래어 "블록"은 발음하면서도 block의 발음을 완벽히 재현하지 못해서 어려움이 있었으나(블록과 block 발음하는 게 같아 보였는데..) 재차 발음해보면서 같은 단어임을 확정한다.
덧글 중에는 AI가 학습하는 모양 같다고.